1 module android_entry;
2 
3 version(Android):
4 import app;
5 import hip.jni.helper.androidlog;
6 import hip.jni.jni;
7 import hip.jni.helper.jnicall;
8 ///Setups an Android Package for HipremeEngine
9 alias HipAndroid = javaGetPackage!("com.hipremeengine.app.HipremeEngine");
10 import hip.systems.input;
11 import hip.console.log;
12 
13 export extern(C)
14 {
15     private __gshared bool _hasExecInit = false;
16     void Java_com_hipremeengine_app_HipremeEngine_HipremeInit(JNIEnv* env, jclass clazz)
17     {
18         if(!_hasExecInit)
19         {
20             _hasExecInit = true;
21             import hip.filesystem.systems.android;
22             HipremeInit();
23             JNISetEnv(env);
24             aaMgr = cast(AAssetManager*)HipAndroid.javaCall!(Object, "getAssetManager");
25             aaMgr = AAssetManager_fromJava(env, aaMgr);
26         }
27     }
28 
29     private __gshared bool _hasExecMain;
30     private __gshared int  _mainRet;
31     jint Java_com_hipremeengine_app_HipremeEngine_HipremeMain(JNIEnv* env, jclass clazz)
32     {
33         if(!_hasExecMain)
34         {
35             _hasExecMain = true;
36             int[2] wsize = HipAndroid.javaCall!(int[2], "getWindowSize");
37             _mainRet = HipremeMain(wsize[0], wsize[1]);
38         }
39         return _mainRet;
40     }
41     jboolean Java_com_hipremeengine_app_HipremeEngine_HipremeUpdate(JNIEnv* env, jclass clazz)
42     {
43         return HipremeUpdate();
44     }
45     void Java_com_hipremeengine_app_HipremeEngine_HipremeRender(JNIEnv* env, jclass clazz)
46     {
47         HipremeRender();
48     }
49 
50     void Java_com_hipremeengine_app_HipremeEngine_HipremeReinitialize(JNIEnv* env, jclass clazz)
51     {
52         import hip.hiprenderer.renderer;
53         HipRenderer.reinitialize();
54     }
55 
56     void  Java_com_hipremeengine_app_HipremeEngine_HipremeDestroy(JNIEnv* env, jclass clazz)
57     {
58         JNISetEnv(null);
59         HipremeDestroy();
60     }
61 }